package tantan.mokuai4.homework;

/*
* 客户端
* */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;

public class ChatClient {

    public static void main(String[] args) {

        Scanner sc = null;
        PrintStream ps = null;
        BufferedReader br = null;

//        （1）创建Socket类型的对象并提供服务器的IP地址和端口号；
        Socket s = null;
        try {
            s = new Socket("127.0.0.1",6688);
        } catch (IOException e) {
            e.printStackTrace();
        }
//        （2）使用输入输出流进行通信；
        sc = new Scanner(System.in);
        try {
            ps = new PrintStream(s.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            br = new BufferedReader(new InputStreamReader(s.getInputStream()));
        } catch (IOException e) {
            e.printStackTrace();
        }

//        实现聊天功能
//        服务器向客户端发消息
        while(true){
            System.out.println("请输入要发送的数据内容");
            String str1 = sc.next();
            ps.println(str1);
            System.out.println("发送消息成功");
            // 当发送的数据内容为"bye"时，则聊天结束
            if ("bye".equalsIgnoreCase(str1)) {
                System.out.println("聊天结束！");
                break;
            }
            // 实现接收服务器发来的字符串内容并打印
            String str2 = null;
            try {
                str2 = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("服务器回发的消息是：" + str2);
        }
//        （3）关闭Socket；
        if(null != s){
            try {
                s.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if(null != sc){
            sc.close();
        }
        if(null != ps){
            ps.close();
        }
        if(null != br){
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
